package com.iflytek.cosmo.ocr.service;

import com.iflytek.cosmo.ocr.model.domain.LogBatchParam;
import com.iflytek.cosmo.ocr.model.domain.LogParam;

import java.util.List;

/**
 * 数据埋点服务
 * @author admin
 */
public interface ArgusPostService {

    /**
     * 数据埋点通用方法
     * @param clientIp 客户端IP
     * @param metric 指标名称
     * @param value 指标值
     * @param tags tags
     * @param sendType ip/detail
     */
    void postAgent(String clientIp, String metric, Object value, String tags, String sendType);
    
    /**
     * 调用数据分析平台接口方法
     *
     * @param type 统计的指标类型
     * @param value 指标的数值（时长，次数等）
     * @param userId 用户id
     * @param userIp ip地址
     * @param mac mac地址
     * @throws InvalidParamExceptionAbstract 参数非法异常
     */
    void addToolLog(String type, Object value, String userId, String userIp, String mac);


    /**
     * 调用数据分析平台接口方法
     *
     * @param logParamList 统计的消息体集合
     * @param userIp ip地址
     * @throws InvalidParamExceptionAbstract 参数非法异常
     */
    void addToolLog(List<LogParam> logParamList, String userIp);

    /**
     * 批量数据埋点
     * @param logBatchParam 埋点数据
     * @param userIp 客户端IP
     */
    void addBatchToolLog(LogBatchParam logBatchParam, String userIp);

    /**
     * 发送埋点数据到MQ
     * @param sendType 发送类型
     * @param areaCode 区域编码
     * @param userIp 用户IP
     * @param org 组织编码
     * @param metric 指标名称
     * @param obj 指标值
     * @param tags 附带信息
     */
    void postAgent(String sendType, String areaCode, String userIp, String org, String metric, Object obj, String tags, String computerName);
}
